#include "cmd_2.h"

/**
 * @brief cmd_2类的构造函数
 * 
 * @param parent 父窗口指针，用于指定当前窗口的父窗口
 */
cmd_2::cmd_2(QWidget* parent)
    : QMainWindow(parent)  // 初始化基类QMainWindow，传入父窗口指针
    , ui(new Ui_cmd_2)    // 初始化UI界面，创建cmd_2类的UI对象
{
    ui->setupUi(this);    // 设置UI界面，将UI组件与当前窗口关联
    // 连接信号和槽 发布 信号 接收 处理
    //
    connect(ui->lineEdit, SIGNAL(returnPressed()), this, SLOT(on_comint_clicked())); // 当按下回车键时，触发on_comint_clicked槽函数
    connect(ui->cancel, &QPushButton::clicked, this, &cmd_2::on_cancel_clicked); // 当点击取消按钮时，触发on_cancel_clicked槽函数
    connect(ui->browse, &QPushButton::clicked, [this]() { // 当点击浏览按钮时，弹出信息框
        QMessageBox::information(this, "信息", "点击浏览");
    });
}

// cmd_2析构函数的实现
// 当cmd_2对象被销毁时，此函数会被自动调用
cmd_2::~cmd_2()
{
    // 释放UI资源，防止内存泄漏
    delete ui; 
}
/**
 * @brief 处理命令执行按钮点击事件的槽函数
 * 当用户点击命令执行按钮时，此函数会被调用
 * 它会获取用户在命令行输入框中输入的命令，并使用QProcess执行该命令
 */
void cmd_2::on_comint_clicked()
{
    // 获取界面上的命令行输入文本
    QString program = ui->lineEdit->text(); 
    // 创建一个QProcess对象，用于执行外部程序
    QProcess *myProcess = new QProcess(this);
    // 实际上应该使用变量program的值，即 myProcess->start(program);
    myProcess->start(program);

}

/**
 * @brief 取消按钮的槽函数
 * 
 * 当用户点击取消按钮时调用此函数，用于关闭当前窗口
 */
void cmd_2::on_cancel_clicked()
{
    this->close(); // 关闭当前窗口
}

